// SPDX-FileCopyrightText: 2023-2025 Sangfor Technologies Inc.
// SPDX-License-Identifier: Mulan PSL v2
package com.geniusai.aip.auth.domain;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.List;

/**
 * @author hml14563
 * @date 2021/5/11
 */
@Data
public class TotalResource {
    private Integer totalCpu;

    private Integer totalUsedCpu;

    private Integer totalRemainedCpu;

    private Integer totalCpuUsage;

    private Integer allocateTotalCpu;

    private Integer remainedAllocatedTotalCpu;

    private Integer allocatedTotalCpuUsage;

    private Integer totalMemory;

    private Integer totalUsedMemory;

    private Integer totalRemainedMemory;

    private Integer totalMemoryUsage;

    private Integer allocatedTotalMemory;

    private Integer remainedAllocatedTotalMemory;

    private Integer allocatedTotalMemoryUsage;

    private Integer totalStorage;

    private Integer totalUsedStorage;

    private Integer totalRemainedStorage;

    private Integer totalStorageUsage;

    private Integer allocatedTotalStorage;

    private Integer remainedAllocatedTotalStorage;

    private Integer allocatedTotalStorageUsage;

    private Integer totalGpuMemory;

    @JsonProperty("allocatedTotalVGpuMemory")
    private Integer allocatedTotalVGpuMemory;

    @JsonProperty("allocatedTotalVGpuMemoryUsage")
    private Integer allocatedTotalVGpuMemoryUsage;

    @JsonProperty("vGpuAllocatedGraph")
    private VGpuAllocatedGraph vGpuAllocatedGraph;

    @JsonProperty("vGpuAllocatedGraphList")
    private List<VGpuGraph> vGpuAllocatedGraphList;

    @Data
    public static class VGpuAllocatedGraph {
        @JsonProperty("geniusVGpu8G")
        private Integer geniusVGpu8G;
        @JsonProperty("geniusVGpu16G")
        private Integer geniusVGpu16G;
        @JsonProperty("geniusVGpu24G")
        private Integer geniusVGpu24G;
        @JsonProperty("geniusVGpu32G")
        private Integer geniusVGpu32G;
    }


    @Data
    public static class VGpuGraph {
        private String name;
        private Integer value;

        public VGpuGraph() {

        }

        public VGpuGraph(Integer value) {
            this.value = value;
        }
    }

}
